// 为 art-template 定义时间过滤器函数
template.defaults.imports.dateFormat = function (dtStr) {

  function padZero(n) {
    return n > 9 ? n : '0' + n
  }

  let dt = new Date(dtStr)

  let y = dt.getFullYear()
  let m = padZero(dt.getMonth() + 1)
  let d = padZero(dt.getDate())

  let hh = padZero(dt.getHours())
  let mm = padZero(dt.getMinutes())
  let ss = padZero(dt.getSeconds())

  return y + '-' + m + '-' + d + ' ' + hh + ':' + mm + ':' + ss
}

// layui规定的初始项
let laypage = layui.laypage
let form = layui.form
// 查询对象
let queryObj = {
  // cate_id: '', // 类型Id
  // state: '', // 文章状态
  pagesize: 2, // 每页显示多少条数据
  pagenum: 1 // 页码值
}

// 页面首次加载时，获取文章列表数据
getArticleList()


// 发起请求，获取列表数据
function getArticleList() {
  $.ajax({
    url: '/my/article/list', 
    data: queryObj, 
    success: function (res) {
      if (res.status !== 0) {
        return layer.msg('获取文章列表失败！')
      }
      // 使用 art-template 模板引擎渲染页面结构
      let htmlStr = template('listClassification', res)
      $('#art-list-body').html(htmlStr)
      // 重新渲染分页区域
      // 为真实的总数据条数传参
      renderPager(res.total)
    }
  })
}

// 渲染你底部的分页区域
function renderPager(res) {
  // 3. 执行一个 laypage 实例
  laypage.render({
    elem: 'page-box', // 注意，这里的 page-box 是 ID，不用加 # 号
    count: res, // 数据总数，从服务端得到
    limit: queryObj.pagesize, // 每页显示多少条数据
    limits: [2, 3, 5, 10], // 每页显示多少条数据的选择器
    groups: 5, // 连续出现的页码个数
    curr: queryObj.pagenum, // 规定当前页码
    layout: ['count', 'limit', 'prev', 'page', 'next', 'skip'],
    jump: function (obj, first) {
      // 首次不执行
      if (!first) {
        // 得到当前的页码值
        queryObj.pagenum = obj.curr
        // 得到每页显示的条数
        queryObj.pagesize = obj.limit
        // 页码发生跳转时，重新获取文章列表数据
        getArticleList()
      }
    }
  })
}

// 渲染分类下拉框
$.get('/my/article/cates', function (res) {
  if (res.status !== 0) {
    return layer.msg('获取文章分类失败！')
  }
  let htmlStr = template('articleList', res)
  $('#catesList').html(htmlStr)
  // 显示下拉菜单
  form.render()
})

// 监听筛选区域的 submit 事件
$('#formSearch').on('submit', function (e) {
  e.preventDefault()

  // 将表单序列化为一个参数对象
  let formArr = $(this).serializeArray()
  // console.log(formArr);
  // 方法一
  // 循环参数对象，将每个参数挂载到 queryObj 中
  $.each(formArr, function (id, item) {
    // console.log(id); // id是索引值
    queryObj[item.name] = item.value
  })
  // 方法二
  // 将获取到的表单数据内容添加给全局变量用于接口数据
  // queryObj.cate_id = formArr[0].value
  // queryObj.state = formArr[1].value

  // 搜索条件变化时，重置页码值，并重新获取文章列表数据
  queryObj.pagenum = 1
  getArticleList()
})

// 监听删除按钮的点击事件
$('body').on('click', '.btn_delete', function () {
  let id = 
  // 询问用户是否要删除
  layer.confirm('确认删除?', {icon: 3, title: '提示'}, index => {
    // 发起请求，删除文章
    $.ajax({
      url: '/my/article/delete/' + $(this).data('id'), 
      success: function (res) {
        if (res.status !== 0) {
          return layer.msg('删除文章失败！')
        }
        layer.msg('删除文章成功！')
        getArticleList()
      }
    })
    layer.close(index)
  })
})


